package com.lambda;

import java.util.function.Function;

/**
 * Created by
 *
 * Function 接口中的 R apply(T t)  将一个类型转化为另一个的类型 根据类型T得到R类型的结果
 *                 默认方法 andThen  将两个function接口进行组合操作
 *
 *
 *
 * @author touni
 * @date 2019/4/29
 * @time 12:10
 */
public class DemoFunction {
    public static Integer transerInteger(String str, Function<String,Integer> function){
        return function.apply(str);
    }

    /**
     * 需求 将字符串"王五，24" 中的年龄增加10  并要使用三个接口
     * @param str
     * @param fun1
     * @param fun2
     * @param fun3
     * @return
     */
    public static String change(String str, Function<String,Integer> fun1,
                                Function<Integer,Integer> fun2,
                                Function<Integer,String> fun3){
        return fun1.andThen(fun2.andThen(fun3)).apply(str);
    }






    public static void main(String[] args) {
        System.out.println(transerInteger("4562",(str)->{
            return Integer.parseInt(str);
        }));

        String change = change("王五，24", (str) -> {
            return Integer.parseInt(str.split("，")[1]);
        }, (age) -> {
            return age + 10;
        }, (aged) -> {
            return String.valueOf(aged);
        });
        System.out.println(change);



    }





}
